home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / glibmm-2.4 / proc / m4 / member.m4 < prev    next >
M4 Source File  |  2006-04-20  |  2KB  |  109 lines

  1. dnl
  2. dnl --------------------------- Accessors ----------------------------
  3. dnl
  4.  
  5.  
  6. dnl Get:
  7.  
  8.  
  9. dnl Creates accessors for simple types:
  10. dnl _MEMBER_GET(cpp_name, c_name, cpp_type, c_type)
  11. define(`_MEMBER_GET',`dnl
  12. $3 get_$1() const;
  13. _PUSH(SECTION_CC)
  14. $3 __CPPNAME__::get_$1() const
  15. {
  16.   return _CONVERT($4,$3,`gobj()->$2');
  17. }
  18.  
  19. _POP()')
  20.  
  21. dnl Creates two accessors for pointer types, one const and one non-const:
  22. define(`_MEMBER_GET_PTR',`dnl
  23. $3 get_$1();
  24.   const $3 get_$1() const;
  25. _PUSH(SECTION_CC)
  26. $3 __CPPNAME__::get_$1()
  27. {
  28.   return _CONVERT($4,$3,`gobj()->$2');
  29. }
  30.  
  31. const $3 __CPPNAME__::get_$1() const
  32. {
  33.   return _CONVERT($4,const $3,`gobj()->$2');
  34. }
  35.  
  36. _POP()')
  37.  
  38. dnl Creates accessors for GObject-derived types that must be ref()ed.
  39. define(`_MEMBER_GET_GOBJECT',`dnl
  40. Glib::RefPtr<$3> get_$1();
  41.   Glib::RefPtr<const $3> get_$1() const;
  42. _PUSH(SECTION_CC)
  43. Glib::RefPtr<$3> __CPPNAME__::get_$1()
  44. {
  45.   Glib::RefPtr<$3> ref_ptr(_CONVERT($4,Glib::RefPtr<$3>,`gobj()->$2'));
  46.  
  47. dnl We could use the bool with Glib::wrap(), but we want to share the m4 type-conversion map.
  48.   if(ref_ptr)
  49.     ref_ptr->reference();
  50.  
  51.   return ref_ptr;
  52. }
  53.  
  54. Glib::RefPtr<const $3> __CPPNAME__::get_$1() const
  55. {
  56.   Glib::RefPtr<const $3> ref_ptr(_CONVERT($4,Glib::RefPtr<const $3>,`gobj()->$2'));
  57.  
  58. dnl We could use the bool with Glib::wrap(), but we want to share the m4 type-conversion map.
  59.   if(ref_ptr)
  60.     ref_ptr->reference();
  61.  
  62.   return ref_ptr;
  63. }
  64.  
  65. _POP()')
  66.  
  67.  
  68. dnl Set:
  69.  
  70. dnl Creates accessors for simple types:
  71. define(`_MEMBER_SET',`dnl
  72. void set_$1(const $3`'& value);
  73. _PUSH(SECTION_CC)
  74. void __CPPNAME__::set_$1(const $3`'& value)
  75. {
  76.   gobj()->$2 = _CONVERT($3,$4,`value');
  77. }
  78.  
  79. _POP()')
  80.  
  81. dnl Creates accessors for pointer types:
  82. define(`_MEMBER_SET_PTR',`dnl
  83. void set_$1($3 value);
  84. _PUSH(SECTION_CC)
  85. void __CPPNAME__::set_$1($3 value)
  86. {
  87.   gobj()->$2 = _CONVERT($3,$4,`value');
  88. }
  89.  
  90. _POP()')
  91.  
  92. dnl Creates accessors for GObject-derived types that must be ref()ed.
  93. define(`_MEMBER_SET_GOBJECT',`dnl
  94. void set_$1(const Glib::RefPtr<$3>& value);
  95. _PUSH(SECTION_CC)
  96. void __CPPNAME__::set_$1(const Glib::RefPtr<$3>& value)
  97. {
  98.   Glib::RefPtr<$3> valueOld(_CONVERT($4,Glib::RefPtr<$3>,`gobj()->$2')); //Take possession of the old one, unref-ing it in the destructor.
  99.  
  100.   if(value)
  101.     value->reference(); //Ref once for the recipient.
  102.  
  103.   gobj()->$2 = _CONVERT(const Glib::RefPtr<$3>&,$4,`value');
  104. }
  105.  
  106. _POP()')
  107.  
  108.  
  109.